# 菜品分类管理
from django.db.models import Q
from django.shortcuts import render
from django.http import HttpResponse
from myadmin.models import Category, Shop, Product
from django.core.paginator import Paginator
from datetime import datetime
import time, os


# Create your views here.
def index(request, pIndex=1):
    """ 浏览信息 """
    # umod = Category.objects
    pro_list = Product.objects.filter(status__lt=9)

    # 搜索条件
    mywhere = []
    kw = request.GET.get('keyword', None)
    if kw:
        pro_list = pro_list.filter(name__contains=kw)
        mywhere.append('keyword=' + kw)
    # 类别搜索
    cid = request.GET.get('category_id', None)
    if cid:
        pro_list = pro_list.filter(category_id=cid)
        mywhere.append('category_id=' + cid)

    pro_list = pro_list.order_by('id')
    # 分页处理
    pIndex = int(pIndex)
    page = Paginator(pro_list, 10)  # 5条数据一页显示
    maxpages = page.num_pages  # 获取最大页数
    # 判断不能越界
    if pIndex > maxpages:
        pIndex = maxpages
    if pIndex < 1:
        pIndex = 1
    list2 = page.page(pIndex)  # 获取当前页数据
    plist = page.page_range  # 获取页码列表信息

    # 遍历当前菜品分类信息并封装对应的店铺信息和类别信息
    for vo in list2:
        # print(vo)
        sob = Shop.objects.get(id=vo.shop_id)
        vo.shop_name = sob.name
        cob = Category.objects.get(id=vo.category_id)
        vo.category_name = cob.name
    context = {
        'product_list': list2,
        'plist': plist,
        'pIndex': pIndex,
        'maxpages': maxpages,
        'mywhere': mywhere
    }
    return render(request, 'myadmin/product/index.html', context)


def add(request):
    """ 添加 """
    # slist = Shop.objects.filter(status__lt=9)
    slist = Shop.objects.filter(status=1)  # 正常店铺才可以加菜品分类
    slist = slist.values('id', 'name')
    context = {'shoplist': slist}
    print(context)
    return render(request, 'myadmin/product/add.html', context)


from utils.encrypt import md5
from utils.encrypt import add_salt


def insert(request):
    """ 执行添加 """
    print(1)
    try:
        # 图片上传操作
        myfile = request.FILES.get('cover_pic', None)
        if not myfile:
            return HttpResponse('没有封面上传文件信息')
        cover_pic = str(time.time()) + '.' + myfile.name.split('.').pop()
        with open('./static/uploads/product/' + cover_pic, mode='wb+') as f:
            for chunk in myfile.chunks():
                f.write(chunk)

        ob = Product()
        ob.shop_id = request.POST['shop_id']
        ob.category_id = request.POST['category_id']
        ob.name = request.POST['name']
        ob.price = request.POST['price']
        ob.cover_pic = cover_pic
        ob.status = 1
        ob.create_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.update_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.save()
        context = {'info': '添加成功'}
    except Exception as arr:
        print(arr)
        context = {'info': '添加失败'}

    return render(request, 'myadmin/info.html', context)


def delete(request, pid=0):
    """ 删除 """
    print(pid)
    try:
        ob = Product.objects.get(id=pid)
        ob.status = 9
        ob.update_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.save()
        context = {'info': '删除成功'}
    except Exception as arr:
        print(arr)
        context = {'info': '删除失败'}

    return render(request, 'myadmin/info.html', context)


def edit(request, pid=0):
    """ 编辑 """
    try:
        slist = Shop.objects.filter(status=1)  # 正常店铺才可以加菜品分类
        slist = slist.values('id', 'name')

        ob = Product.objects.get(id=pid)
        context = {'product': ob, 'shoplist': slist}
        return render(request, 'myadmin/product/edit.html', context)

    except Exception as arr:
        print(arr)
        context = {'info': '没有找到要修改的信息'}
        return render(request, 'myadmin/info.html', context)


def update(request, pid=0):
    """ 执行编辑 """
    print(pid)
    try:
        # 原图片
        oldpicname = request.POST['oldpicname']
        # 图片上传操作
        myfile = request.FILES.get('cover_pic', None)
        if not myfile:
            cover_pic = oldpicname
        else:
            cover_pic = str(time.time()) + '.' + myfile.name.split('.').pop()
            with open('./static/uploads/product/' + cover_pic, mode='wb+') as f:
                for chunk in myfile.chunks():
                    f.write(chunk)

        ob = Product.objects.get(id=pid)
        ob.shop_id = request.POST['shop_id']
        ob.category_id = request.POST['category_id']
        ob.name = request.POST['name']
        ob.price = request.POST['price']
        ob.cover_pic = cover_pic
        ob.update_at = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        ob.save()

        # 修改图片成功了 要把老图片删除
        if myfile:
            os.remove('./static/uploads/product/' + oldpicname)

        context = {'info': '修改成功'}
    except Exception as arr:
        print(arr)
        context = {'info': '修改失败'}
        # 修改图片失败了 要把新图片删除
        if myfile:
            os.remove('./static/uploads/product/' + cover_pic)
    return render(request, 'myadmin/info.html', context)
